package cn.edu.lcu.cs.architecture.event.demo;

import java.time.Instant;
import java.util.Random;

import static cn.edu.lcu.cs.architecture.event.demo.Event.Type.TIMER;

/**
 * 定时器事件源
 */
public class Timer extends EventSource {

    public Timer(EventDispatcher dispather) {
        super(dispather);
    }

    /**
     * @return 自动生成的随机倒计时秒数
     */
    private int generateSeconds() {
        return new Random().nextInt(50);
    }

    @Override
    public void run() {
        while (true) {
            // 模拟产生一次事件，并添加到事件分发器的队列中
            dispather.enQueue(new Event(TIMER, "【" + generateSeconds() + "】秒\t" + Instant.now()));
            sleep(); // 随机休眠若干毫秒
        }
    }
}
